c++ - C++ FakeIt 库多重继承
全部标签 下面有两个代码示例。一个有效,但第二个(使用extend创建新的类包装器)无效。请注意,我已经大大简化了以下示例。方法#1page.php:AddPage();$pdf->SetFont('Arial','',11);$pdf->Output();?>这按预期工作。它会创建一个空白页面。方法#2但是,通过继承使用FPDF,我得到一个错误(见下面的代码块)。myPDF.php:AddPage();$this->SetFont('Arial','',11);$this->Output();}}?>page.php:createMyPage();?>第二种方法会产生以下PHP警告和FPDF错
虽然这个问题是关于DocBlocks的一般来说,我的用例是关于PHP的。考虑以下PHP代码:say_hi()->say_b|这只是一个带有一些链接的普通类。扩展类失去了类型提示,因为父类的文档block正在使用不具有子类的方法/属性的特定类名。假设我们确实需要类型提示功能,(如果不需要,请留下这个问题-我不想在这里使用无用的参数),我应该如何解决这个问题?我想到了以下可能性:更改PHPDoc标准以允许使用特殊关键字添加一个多余的say_hi()方法,该方法调用父级只是为了重新声明docblock根本不指定返回类型,让IDE决定return$this;的含义(这是否有效?)
我很难解释我正在尝试做什么,所以我只提供一个例子classA{static$data=['a'];staticfunctiongetData(){returnstatic::$data;}}classBextendsA{static$data=['b'];}classCextendsB{static$data=['c'];}classDextendsB{static$data=['d'];}$a=newA;$b=newB;$c=newC;$d=newD;$a::getData();//Output:Array('a'),Expected:Array('a');$b::getData()
我正在使用Symfony2并且我有一个类层次结构。层次结构非常简单,我有一个问题(父问题)和许多不同的子问题。使用奏鸣曲,我希望能够创建不同类型的问题,即子问题。为此,我创建了一个类层次结构,如下所示:Hippy\ScavengerHuntBundle\Entity\Question:type:entitytable:nullinheritanceType:JOINEDdiscriminatorColumn:name:subClasstype:stringdiscriminatorMap:blurredMultipleChoiceQuestion:BlurredMultipleChoi
classA{static$v="A";staticfunctionechoExtendedStaticVariable(){echoself::$v;}}classBextendsA{static$v="B";//overrideA'svariablewith"B"}为什么:echoB::$v打印“A”?我如何让它打印“B”?在PHP5.3之前有办法做到这一点吗? 最佳答案 B->echoExtendedStaticVariable()=='A'因为self::是在编译时计算的,而不是运行时.这就好像你写的是A::而不是self:
我正在制作一个PHP网络应用程序。我有一种情况,我相信会促进嵌套继承的好时机。无论如何,这是我的情况:publicclassRecurringWeeklyEventextendsRecurringEvent{}publicclassRecurringEventextendsEvent{}在我看来,这并不是一个糟糕的设计实践;但是,无论如何,我都不是高级的面向对象的程序员。话虽如此,在我冒险在我的应用程序中使用这种代码之前,我想知道这对更有经验/合格的程序员来说是好的还是坏的做法。注意:在更正使用错误术语后,我将标题从多重继承更改为嵌套继承。谢谢史蒂夫 最佳答
在php中,如果A扩展B,B的_constrctor()会在A实例化时自动执行吗?还是我必须调用parent->_constructor()? 最佳答案 PHP寻找它能找到的最顶层(最接近实例化类)__construct方法。然后它只执行那个。ClassA{publicfunction__construct(){echo"FromA";}}ClassBextendsA{publicfunction__construct(){echo"FromB";}}ClassCextendsA{}ClassDextendsB{}ClassEext
有人试过吗?是否可能,如果可能,如果我尝试完成它会遇到什么样的问题? 最佳答案 如果您的目标是在Controller之间共享逻辑:将逻辑添加到AppController以与应用中的所有Controller共享它。创建一个组件并将其添加到$this->components以供您要共享它的Controller使用。在Controller之间添加额外的继承只能被视为最后的手段,因为您必须格外注意组件和助手的处理方式。例如。您必须手动将$this->components&$this->helpers与AppController和您继承自的C
我是OOP的新手,我有一个非常基础的问题,但我无法以简洁的方式解释它,因此很难找到答案。我有一个支持信用卡处理的应用程序,我想抽象处理功能,以便我可以添加其他提供程序(linkpoint、authorize.net等)。我想我想做的是创建一个看起来像这样的简单类:classcredit{function__construct($provider){//loadthecreditpaymentclassof$provider}}然后我会让提供者各自扩展这个类,例如classlinkpointextendscredit{}但我真的想更像一个接口(interface)一样使用信用类。我不想要
我在一些图书馆看到过这样的东西:$this->getResponse()->setRedirect($returnUrl);这个“multicall”是如何完成的,或者应该如何构建类来做这样的事情?我认为:classgreeting{publicfunctionhi(){publicfunctionhowAreYou(){echo'Howareyou?';}}}$greet=newgreeting;$greet->hi()->howAreYou();但我认为它不太好,我最好使用extends之类的东西,但我不知道。感谢您的建议。 最佳答案